package com.wilson.integration.lease.admin.service.impl;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.wilson.integration.lease.common.entity.*;
import com.wilson.integration.lease.common.entity.vo.agreement.AgreementQueryVO;
import com.wilson.integration.lease.common.entity.vo.agreement.AgreementVO;
import com.wilson.integration.lease.common.mapper.*;
import com.wilson.integration.lease.admin.service.LeaseAgreementService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

/**
 * @author wilson
 * @description 针对表【lease_agreement(租约信息表)】的数据库操作Service实现
 * @createDate 2023-07-24 15:48:00
 */
@Service
public class LeaseAgreementServiceImpl extends ServiceImpl<LeaseAgreementMapper, LeaseAgreement> implements LeaseAgreementService {

    @Resource
    private LeaseAgreementMapper leaseAgreementMapper;

    @Resource
    private ApartmentInfoMapper apartmentInfoMapper;

    @Resource
    private RoomInfoMapper roomInfoMapper;

    @Resource
    private PaymentTypeMapper paymentTypeMapper;

    @Resource
    private LeaseTermMapper leaseTermMapper;

    @Override
    public IPage<AgreementVO> pageAgreementByQuery(IPage<AgreementVO> page, AgreementQueryVO queryVO) {
        return leaseAgreementMapper.pageAgreementByQuery(page, queryVO);
    }

    @Override
    public AgreementVO getAgreementById(Long id) {
        // 1.查询租约信息
        LeaseAgreement leaseAgreement = leaseAgreementMapper.selectById(id);

        // 2.查询公寓信息
        ApartmentInfo apartmentInfo = apartmentInfoMapper.selectById(leaseAgreement.getApartmentId());

        // 3.查询房间信息
        RoomInfo roomInfo = roomInfoMapper.selectById(leaseAgreement.getRoomId());

        // 4.查询支付方式
        PaymentType paymentType = paymentTypeMapper.selectById(leaseAgreement.getPaymentTypeId());

        // 5.查询租期
        LeaseTerm leaseTerm = leaseTermMapper.selectById(leaseAgreement.getLeaseTermId());

        AgreementVO adminAgreementVO = new AgreementVO();
        BeanUtils.copyProperties(leaseAgreement, adminAgreementVO);
        adminAgreementVO.setApartmentInfo(apartmentInfo);
        adminAgreementVO.setRoomInfo(roomInfo);
        adminAgreementVO.setPaymentType(paymentType);
        adminAgreementVO.setLeaseTerm(leaseTerm);
        return adminAgreementVO;
    }
}




